#Boa:Frame:Frame1
# -*- coding: utf-8 -*-

import wx
import wx.grid
import utiles
import consultasBD
from decimal import Decimal

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1BUTTON2, wxID_FRAME1BUTTON3, 
 wxID_FRAME1BUTTON4, wxID_FRAME1BUTTON5, wxID_FRAME1BUTTON6, 
 wxID_FRAME1BUTTON7, wxID_FRAME1BUTTON8, wxID_FRAME1BUTTON9, 
 wxID_FRAME1CHECKBOX1, wxID_FRAME1CHECKBOX2, wxID_FRAME1GRID1, 
 wxID_FRAME1PANEL1, wxID_FRAME1RADIOBUTTON1, wxID_FRAME1RADIOBUTTON2, 
 wxID_FRAME1STATICTEXT1, wxID_FRAME1STATICTEXT3, wxID_FRAME1TEXTCTRL1, 
] = [wx.NewId() for _init_ctrls in range(19)]

class Frame1(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(223, 120), size=wx.Size(1050, 475),
              style=wx.DEFAULT_FRAME_STYLE, title='Matris Web')
        self.SetClientSize(wx.Size(1042, 448))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(1042, 448),
              style=wx.TAB_TRAVERSAL)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label='Agregar',
              name='button1', parent=self.panel1, pos=wx.Point(96, 24),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnAgregar, id=wxID_FRAME1BUTTON1)

        self.button2 = wx.Button(id=wxID_FRAME1BUTTON2, label='Actualizar',
              name='button2', parent=self.panel1, pos=wx.Point(184, 24),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnActualizar,
              id=wxID_FRAME1BUTTON2)

        self.button5 = wx.Button(id=wxID_FRAME1BUTTON5, label='Info Extra',
              name='button5', parent=self.panel1, pos=wx.Point(272, 24),
              size=wx.Size(75, 23), style=0)
        self.button5.Bind(wx.EVT_BUTTON, self.OnInfoExtra,
              id=wxID_FRAME1BUTTON5)

        self.button8 = wx.Button(id=wxID_FRAME1BUTTON8, label='Exportar',
              name='button8', parent=self.panel1, pos=wx.Point(360, 24),
              size=wx.Size(75, 23), style=0)
        self.button8.Bind(wx.EVT_BUTTON, self.OnExportar, id=wxID_FRAME1BUTTON8)

        self.button9 = wx.Button(id=wxID_FRAME1BUTTON9, label='Re-Exportar',
              name='button9', parent=self.panel1, pos=wx.Point(448, 24),
              size=wx.Size(75, 23), style=0)
        self.button9.Show(True)
        self.button9.Bind(wx.EVT_BUTTON, self.OnReExportar,
              id=wxID_FRAME1BUTTON9)

        self.button7 = wx.Button(id=wxID_FRAME1BUTTON7, label='Imprimir',
              name='button7', parent=self.panel1, pos=wx.Point(688, 24),
              size=wx.Size(75, 23), style=0)
        self.button7.Bind(wx.EVT_BUTTON, self.OnImprimir, id=wxID_FRAME1BUTTON7)

        self.button6 = wx.Button(id=wxID_FRAME1BUTTON6, label='Borrar',
              name='button6', parent=self.panel1, pos=wx.Point(776, 24),
              size=wx.Size(75, 23), style=0)
        self.button6.Bind(wx.EVT_BUTTON, self.OnBorrar, id=wxID_FRAME1BUTTON6)

        self.button3 = wx.Button(id=wxID_FRAME1BUTTON3, label='Limpiar',
              name='button3', parent=self.panel1, pos=wx.Point(864, 24),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_FRAME1BUTTON3)

        self.button4 = wx.Button(id=wxID_FRAME1BUTTON4, label='Salir',
              name='button4', parent=self.panel1, pos=wx.Point(952, 24),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_FRAME1BUTTON4)

        self.textCtrl1 = wx.TextCtrl(id=wxID_FRAME1TEXTCTRL1, name='textCtrl1',
              parent=self.panel1, pos=wx.Point(16, 24), size=wx.Size(72, 21),
              style=0, value='')
        self.textCtrl1.SetEditable(False)

        self.checkBox1 = wx.CheckBox(id=wxID_FRAME1CHECKBOX1,
              label='Habilitados', name='checkBox1', parent=self.panel1,
              pos=wx.Point(16, 56), size=wx.Size(72, 13), style=0)
        self.checkBox1.SetValue(True)
        self.checkBox1.Bind(wx.EVT_CHECKBOX, self.OnCheckHabilitado,
              id=wxID_FRAME1CHECKBOX1)

        self.checkBox2 = wx.CheckBox(id=wxID_FRAME1CHECKBOX2,
              label='Deshabilitados', name='checkBox2', parent=self.panel1,
              pos=wx.Point(96, 56), size=wx.Size(88, 13), style=0)
        self.checkBox2.SetValue(True)
        self.checkBox2.Bind(wx.EVT_CHECKBOX, self.OnCheckDeshabilitado,
              id=wxID_FRAME1CHECKBOX2)

        self.radioButton1 = wx.RadioButton(id=wxID_FRAME1RADIOBUTTON1,
              label='por Nombre', name='radioButton1', parent=self.panel1,
              pos=wx.Point(272, 56), size=wx.Size(81, 13), style=0)
        self.radioButton1.SetValue(True)
        self.radioButton1.Bind(wx.EVT_RADIOBUTTON, self.OnRadioButton,
              id=wxID_FRAME1RADIOBUTTON1)

        self.radioButton2 = wx.RadioButton(id=wxID_FRAME1RADIOBUTTON2,
              label='por SKU', name='radioButton2', parent=self.panel1,
              pos=wx.Point(360, 56), size=wx.Size(81, 13), style=0)
        self.radioButton2.SetValue(False)
        self.radioButton2.Bind(wx.EVT_RADIOBUTTON, self.OnRadioButton,
              id=wxID_FRAME1RADIOBUTTON2)

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label='Fecha', name='staticText1', parent=self.panel1,
              pos=wx.Point(16, 8), size=wx.Size(29, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_FRAME1STATICTEXT3,
              label='Borrar/Anular Borrado: Doble Click Boton Derecho',
              name='staticText3', parent=self.panel1, pos=wx.Point(752, 432),
              size=wx.Size(280, 13), style=0)
        self.staticText3.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))

        self.grid1 = wx.grid.Grid(id=wxID_FRAME1GRID1, name='grid1',
              parent=self.panel1, pos=wx.Point(16, 80), size=wx.Size(1016, 344),
              style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK,
              self.OnDobleClickIzquierdo)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_RIGHT_DCLICK,
              self.OnDobleClickDerecho)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.crearGrilla()
        self.cargarGrilla()
        self.textCtrl1.SetLabel(utiles.obtenerFecha("d-m-Y"))

    def OnSalir(self, event):
        self.Close()

    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def crearGrilla(self):
        #Nombre,SKU,Descripcion,Agregado,Precio,P.Recom,Cantidad,Habilitado,F.Alta,Ultima Modif,Subido
        #0      1   2           3        4      5       6        7          8      9            10
        columnas = ['Nombre','SKU','Descripcion','Agregado','Precio\nWEB','Precio\nRec.',\
                    'Cant.','Hab.','Fecha Alta','Ultima\nModificacion','Subido']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        #self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.ajustarAnchoColumnas()
        self.grid1.Refresh()

    def cargarGrilla(self):
        r1 = "SELECT s.nombre,s.sku,s.descripcion,s.agregado,s.precioweb,\n"
        r2 = "       s.preciorecomendado,s.cantidad,s.habilitado,s.fechaalta \n"
        r3 = "FROM saskastore s \n"
        if self.radioButton1.GetValue():
            r4 = "WHERE borrado='0' ORDER BY s.nombre "
        else:
            r4 = "WHERE borrado='0' ORDER BY s.sku "
        sql = r1+r2+r3+r4
        resultado = consultasBD.ordenCrudaDict(sql)
        fil = 0
        for item in resultado:
            nombre = item["nombre"]
            sku = item["sku"]
            descripcion = str(item["descripcion"])
            agregado = item["agregado"]
            if agregado == None: agregado = ""
            precioweb = str(item["precioweb"])
            preciorecomendado = str(item["preciorecomendado"])
            cantidad = str(item["cantidad"])
            if item["habilitado"]==1:
                if not self.checkBox1.GetValue(): continue
                habilitado = "SI"
            else:
                if not self.checkBox2.GetValue(): continue
                habilitado = "NO"
            fechaalta = utiles.invertirFecha2(str(item["fechaalta"])[:10])+str(item["fechaalta"])[-9:]

            r1 = "SELECT modificado,subido FROM saskastoremodf WHERE sku='"+sku+"' "
            r2 = "ORDER BY modificado DESC LIMIT 1 "
            sql = r1+r2
            dato = consultasBD.ordenCrudaDict(sql)
            if dato==() or dato==None or len(dato)==0:
                modificado = ""
                subido = ""
            else:
                modificado = utiles.invertirFecha2(str(dato[0]["modificado"])[:10])+str(dato[0]["modificado"])[-9:]
                if str(dato[0]["subido"]) == "0":
                    subido = "NO"
                else:
                    subido = "SI"
            
        #Nombre,SKU,Descripcion,Agregado,Precio,P.Recom,Cantidad,Habilitado,F.Alta,Ultima Modif,Subido
        #0      1   2           3        4      5       6        7          8      9            10
            self.grid1.SetCellValue(fil,0,nombre)
            self.grid1.SetCellValue(fil,1,sku)
            self.grid1.SetCellValue(fil,2,descripcion)
            self.grid1.SetCellValue(fil,3,agregado)
            self.grid1.SetCellValue(fil,4,precioweb)
            self.grid1.SetCellValue(fil,5,preciorecomendado)
            self.grid1.SetCellValue(fil,6,cantidad)
            self.grid1.SetCellValue(fil,7,habilitado)
            self.grid1.SetCellValue(fil,8,fechaalta)
            self.grid1.SetCellValue(fil,9,modificado)
            self.grid1.SetCellValue(fil,10,subido)
            
            self.grid1.SetCellAlignment(fil, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 7, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 8, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil, 9, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,10, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
            self.grid1.AppendRows()
            fil+= 1

        self.ajustarAnchoColumnas()
        self.grid1.SetColSize(2,120)
        self.grid1.SetColSize(3,120)

    def OnAgregar(self, event):
        import saskaStoreAgregar
        dlg = saskaStoreAgregar.Dialog1(self)
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.cargarGrilla()

    def OnInfoExtra(self, event):
        import saskaStoreInfoExtra
        dlg = saskaStoreInfoExtra.Dialog1(self)
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()

    def confirma(self,texto):
        import Dialog2
        confirma = Dialog2.Dialog2(None, texto)
        try:
            confirma.ShowModal()
            if confirma.getSeleccion():
                seguir = True
            else:
                seguir = False
        except:
            confirma.Destroy()
            return False
        confirma.Destroy()
        return seguir

    def OnLimpiar(self, event):
        print "Limpiando"
        self.checkBox1.SetValue(True)
        self.checkBox2.SetValue(True)
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.cargarGrilla()

    def OnCheckHabilitado(self, event):
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.cargarGrilla()

    def OnCheckDeshabilitado(self, event):
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.cargarGrilla()

    def colorRenglon(self,fila,color):
        for col in xrange(self.grid1.GetNumberCols()):
            self.grid1.SetCellBackgroundColour(fila,col,color)
        self.grid1.Refresh()

    def OnDobleClickIzquierdo(self, event):
        fil = self.grid1.GetGridCursorRow()
        sku = self.grid1.GetCellValue(fil,1)
        fecha = self.grid1.GetCellValue(fil,8)
        descripcion = self.grid1.GetCellValue(fil,2)
        nombre = self.grid1.GetCellValue(fil,0)
        habilitado = self.grid1.GetCellValue(fil,7)
        precioweb = self.grid1.GetCellValue(fil,4)
        preciorec = self.grid1.GetCellValue(fil,5)
        color = self.grid1.GetCellBackgroundColour(fil,0)
        if color == ROJO: 
            return
        self.colorRenglon(fil,VERDE)
        import saskaStoreModificar
        dlg = saskaStoreModificar.Dialog1(self,sku,fecha,nombre,descripcion,\
                                               habilitado,precioweb,preciorec)
        try:
            dlg.ShowModal()
        finally:
            dlg.Destroy()
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.cargarGrilla()

    def OnDobleClickDerecho(self, event):
        fil = self.grid1.GetGridCursorRow()
        color = self.grid1.GetCellBackgroundColour(fil,0)
        if color == ROJO:
            self.colorRenglon(fil,BLANCO)
        else:
            self.colorRenglon(fil,ROJO)

    def OnImprimir(self, event):
        print "Imprimir"
        f=open("c:\\matrisamor.doc\\reporte-saskaStore.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 50
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            
            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="left" width="33%">'
            a+= 'SASKA STORE<br><font size="0.1">(no incluye descripciones)</font></td>\n'
            a+= '<td valign="top" align="left" width="34%">'
            a+= '</td>\n'
            a+= '<td valign="top" align="right" width="33%">'+fecha
            a+= '<br><font size="0.1">P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</font></td>\n'
            a+= '</tr>\n'
            a+= '</table></font>\n'
            a+= '<hr>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
        #Nombre,SKU,Descripcion,Agregado,Precio,Cantidad,Habilitado,F.Alta,Ultima Modif,Subido
        #0      1   2           3        4      5        6          7      8            9
            a = '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size="0.1">orden</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Nombre</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">SKU</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Agregado</font></td>\n'
            a+= '<td valign="top" align="right"><font size="0.1">Precio</font></td>\n'
            a+= '<td valign="top" align="right"><font size="0.1">Precio<br>Recom.</font></td>\n'
            a+= '<td valign="top" align="right"><font size="0.1">Cant.</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Habilitado</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Fecha<br>Alta</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Ultima<br>Modif.</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Subido</font></td>\n'
            a+= '</tr>\n'
            a+= '<tr>\n'
            a+= '<td colspan="11"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)
        
        renglon = 0
        orden = 0
        for i in xrange(self.grid1.GetNumberRows()-1):
        #Nombre,SKU,Descripcion,Agregado,Precio,P.Recom,Cantidad,Habilitado,F.Alta,Ultima Modif,Subido
        #0      1   2           3        4      5       6        7          8      9            10
            orden+=1
            nombre = self.grid1.GetCellValue(i,0)
            sku = self.grid1.GetCellValue(i,1)
            talles = self.grid1.GetCellValue(i,3)
            precio = self.grid1.GetCellValue(i,4)
            precior = self.grid1.GetCellValue(i,5)
            cantidad = self.grid1.GetCellValue(i,6)
            habilitado = self.grid1.GetCellValue(i,7)
            falta = self.grid1.GetCellValue(i,8)[:10]
            fmodificado = self.grid1.GetCellValue(i,9)[:10]
            subido = self.grid1.GetCellValue(i,10)
            
            cadena = '<tr>\n'
            cadena+= '<td valign="center" align="right"><font size="0.1">'+str(orden)+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+nombre+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+sku+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+talles+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="0.1">'+precio+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="0.1">'+precior+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="0.1">'+cantidad+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+habilitado+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+falta+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+fmodificado+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+subido+'</font></td> \n'
            cadena+= '</tr>\n'
            try:
                f.write(cadena)
            except:
                print cadena
            
            renglon+= 1
            
            if renglon >= totalItemPorPagina :
                renglon = 0
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")
##                for i in xrange(numeroPagina):
##                    f.write("<br>\n")
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)
            
        cadena = '</table>\n'
        cadena+= '<br>Total &iacute;tems: '+str(self.grid1.GetNumberRows()-1)+'\n'
        cadena+= '<br>Total p&aacute;ginas: '+str(numeroPagina)+'\n'
        cadena+= '</body>\n</html>\n'
        f.write(cadena)
        f.close()

        self.button3.SetFocus()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-saskaStore.html")

    def OnRadioButton(self, event):
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.cargarGrilla()

    def OnBorrar(self, event):
        texto = "DESEA BORRAR LOS ARTICULOS MARCADOS?\n\n"
        texto+= "Este proceso quita definitivamente de la lista\n"
        texto+= "los articulos que han sido marcados en color ROJO.\n"
        texto+= "\n"
        texto+= "ACEPTAR = graba               CANCELAR = salir"
        if not self.confirma(texto):
            return
        print "Borrando..."
        sku = []
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="":
                continue
            if self.grid1.GetCellBackgroundColour(fil,0)!=ROJO:
                continue
            sku.append(self.grid1.GetCellValue(fil,1))
        tablaSQL = "saskastore"
        camposSQL = "borrado='1'"
        try:
            for item in sku:
                condicionSQL = "sku='"+item+"'"
                consultasBD.executaUpdateSQL(None,tablaSQL,camposSQL,condicionSQL)
        except:
            utiles.mensaje(None,"Error durante el borrado")
        self.OnRadioButton(None)

    def OnActualizar(self, event):
        
        def buscarStock(codsussan,color):
            r1 = "SELECT SUM(s.stock) AS cantidad \n"
            r2 = "FROM producto_talle_color ptc, stock s \n"
            r3 = "WHERE ptc.id=s.ptc \n"
            r4 = "      AND ptc.codsussan='"+codsussan+"' \n"
            r5 = "      AND ptc.color='"+color+"' "
            sql = r1+r2+r3+r4+r5
            resultado = consultasBD.ordenCruda(sql)
            try:
                valor = resultado[0][0]
            except:
                valor = -1
            return valor
        
        def buscarTalles(codsussan,color):
            r1 = "SELECT p1.talle \n"
            r2 = "FROM (SELECT DISTINCT ptc.talle \n"
            r3 = "      FROM producto_talle_color ptc, stock s \n"
            r4 = "      WHERE ptc.id=s.ptc \n"
            r5 = "            AND ptc.codsussan='"+codsussan+"' \n"
            r6 = "            AND ptc.color='"+color+"' \n"
            r7 = "            AND s.stock>0 ) AS p1 \n"
            r8 = "WHERE 1 ORDER BY p1.talle "
            sql = r1+r2+r3+r4+r5+r6+r7+r8
            resultado = consultasBD.ordenCruda(sql)
            try:
                cadena = "TALLES: "
                for item in resultado:
                    cadena+= str(item[0])+", "
                cadena = cadena[:-2]
            except:
                cadena = ""
            return cadena
        
        tablaSQL1 = "saskastore"
        tablaSQL2 = "saskastoremodf"
        fecha = utiles.obtenerFecha("Y-m-d")
        #Nombre,SKU,Descripcion,Agregado,Precio,P.Recom,Cantidad,Habilitado,F.Alta,Ultima Modif,Subido
        #0      1   2           3        4      5       6        7          8      9            10
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="": continue
            sku = self.grid1.GetCellValue(fil,1)
            codsussan,color = sku.split("-")
            stock_actual = buscarStock(codsussan,color)
            if stock_actual == -1: continue
            stock_actual = int(stock_actual)
            stock_viejo = self.grid1.GetCellValue(fil,6)
            stock_viejo = int(stock_viejo)
            if stock_actual==stock_viejo:
                continue
            talles = buscarTalles(codsussan,color)
            print "Actualiza",sku

            try:
                camposSQL1 = "agregado='"+talles+"',cantidad='"+str(stock_actual)+"'"
                condicionSQL1 = "sku='"+sku+"'"
                consultasBD.executaUpdateSQL(None,tablaSQL1,camposSQL1,condicionSQL1)
                
                camposSQL2 = "modificado='"+fecha+"',subido='0'"
                condicionSQL2 = "sku='"+sku+"'"
                consultasBD.executaUpdateSQL(None,tablaSQL2,camposSQL2,condicionSQL2)
            except:
                utiles.mensaje(None,"Se produjo un error durante la actualizacion")

        self.OnRadioButton(None)

    def OnExportar(self, event):
        import saskaStoreExport
        dlg = saskaStoreExport.Dialog1(self)
        try:
            dlg.ShowModal()
            procesar,columnas,titulos = dlg.getExportacion()
        finally:
            dlg.Destroy()
        if not procesar:
            return
        
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        fecha = fecha.replace("-","")
        fecha = fecha.replace(":","")
        fecha,hora = fecha.split(" ")
        texto = "Procesando exportacion en "
        archivo = "c:\\matrisamor.doc\saskastore-"+fecha+"-"+hora+".csv"
        print texto+archivo
        misTitulos = ["name","sku","description","price","recommended_price",\
                      "quantity","enabled"]
        encabezado = ""
        for item in titulos:
            encabezado+= misTitulos[item]+";"
        encabezado = encabezado[:-2]+"\n"
        
        f=open(archivo,"w")
        f.write(encabezado)
        lista = []
        #Nombre,SKU,Descripcion,Agregado,Precio,P.Recom,Cantidad,Habilitado,F.Alta,Ult.Modif,Subido
        #0      1   2           3        4      5       6        7          8      9         10
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="": continue
            if self.grid1.GetCellValue(fil,10)!="NO": continue
            print self.grid1.GetCellValue(fil,10)
            cadena = ""
            for col in columnas:
                aux = self.grid1.GetCellValue(fil,col)
                if col == 2: 
                    aux = aux.replace("\n","<br>")
                    aux+= "<br><br>"+self.grid1.GetCellValue(fil,3)
                if col == 7:
                    if self.grid1.GetCellValue(fil,col)=="SI":
                        aux = "yes"
                    else:
                        aux = "no"
                cadena+= aux+";"
            cadena = cadena[:-1]+"\n"
            f.write(cadena)
            lista.append(self.grid1.GetCellValue(fil,1))
        f.close()
        tablaSQL = "saskastoremodf"
        camposSQL = "subido='1'"
        for sku in lista:
            condicionSQL = "sku='"+sku+"'"
            consultasBD.executaUpdateSQL(None,tablaSQL,camposSQL,condicionSQL)

        utiles.mensaje(None,"Exportacion guardada en\n"+archivo)
        self.OnRadioButton(None)

    def OnReExportar(self, event):
        import saskaStoreExport
        dlg = saskaStoreExport.Dialog1(self)
        try:
            dlg.ShowModal()
            procesar,columnas,titulos = dlg.getExportacion()
        finally:
            dlg.Destroy()
        if not procesar:
            return
        
        fecha = utiles.obtenerFecha("Y-m-d h:m:s")
        fecha = fecha.replace("-","")
        fecha = fecha.replace(":","")
        fecha,hora = fecha.split(" ")
        texto = "Procesando exportacion en "
        archivo = "c:\\matrisamor.doc\saskastore-"+fecha+"-"+hora+".csv"
        print texto+archivo
        misTitulos = ["name","sku","description","price","recommended_price",\
                      "quantity","enabled"]
        encabezado = ""
        for item in titulos:
            encabezado+= misTitulos[item]+";"
        encabezado = encabezado[:-2]+"\n"
        
        f=open(archivo,"w")
        f.write(encabezado)
        lista = []
        #Nombre,SKU,Descripcion,Agregado,Precio,P.Recom,Cantidad,Habilitado,F.Alta,Ult.Modif,Subido
        #0      1   2           3        4      5       6        7          8      9         10
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="": continue
            print ".",
            cadena = ""
            for col in columnas:
                aux = self.grid1.GetCellValue(fil,col)
                if col == 2: 
                    aux = aux.replace("\n","<br>")
                    aux+= "<br><br>"+self.grid1.GetCellValue(fil,3)
                if col == 7: #habilitado
                    if self.grid1.GetCellValue(fil,col)=="SI":
                        aux = "yes"
                    else:
                        aux = "no"
                cadena+= aux+";"
            cadena = cadena[:-1]+"\n"
            cadena = unicode(str(cadena),'utf-8')
            f.write(cadena)
            lista.append(self.grid1.GetCellValue(fil,1))
        f.close()
        print
##        tablaSQL = "saskastoremodf"
##        camposSQL = "subido='1'"
##        for sku in lista:
##            condicionSQL = "sku='"+sku+"'"
##            consultasBD.executaUpdateSQL(None,tablaSQL,camposSQL,condicionSQL)

        utiles.mensaje(None,"Exportacion guardada en\n"+archivo)
        self.OnRadioButton(None)
